package com.sg.model.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 能够独立完整运行，需要初始化一个联盟应用、一个场景、一个空间、一个账号、一个成员ID、一个身份人员ID、一个角色人员ID、一个组织ID、一个就职记录ID、一个个人资料ID、一个身份人员资料ID两个角色ID（员工、管理员）、类型编码5张表
 *
 * @author xxx
 */
@Data
@Accessors(chain = true)
@TableName("oms_framework_union_app")  //1-2-06联盟应用表
public class UnionApp implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;


    /**
     * 应用ID
     */
    @TableId(value = "app_id", type = IdType.ASSIGN_UUID)
    @NotNull(message = "appId不能为空")
    private String appId;
    /**
     * 应用标识
     */
    @TableField(value = "app_code")
    @NotNull(message = "应用标识不能为空")
    @Schema(description = "应用标识")
    private String appCode;
    /**
     * 应用名称
     */
    @TableField(value = "app_name")
    @NotNull(message = "应用名称不能为空")
    @Schema(description = "应用名称")
    private String appName;
    /**
     * 一句话介绍
     */
    @TableField(value = "app_introduce")
    @Schema(description = "一句话介绍")
    private String appIntroduce;
    /**
     * 应用简介
     */
    @TableField(value = "app_update_introduct")
    @Schema(description = "应用简介")
    private String appUpdateIntroduct;
    /**
     * 网址
     */
    @TableField(value = "website")
    @Schema(description = "网址")
    private String website;
    /**
     * 应用框架logo图片
     */
    @TableField(value = "app_logo")
    @NotNull(message = "应用框架logo图片不能为空")
    @Schema(description = "应用框架logo图片")
    private String appLogo;
    /**
     * 关于我们logo图片
     */
    @TableField(value = "about_logo")
    @NotNull(message = "关于我们logo图片不能为空")
    @Schema(description = "关于我们logo图片")
    private String aboutLogo;

    /**
     * 配置消息发送人身份人员ID
     */
    @TableField(value = "sender_member_id")
    @Schema(description = "配置消息发送人身份人员ID")
    private String senderMemberId;

    /**
     * 应用登录banner
     */
    @TableField(value = "app_banner")
    @NotNull(message = "应用登录banner不能为空")
    @Schema(description = "应用登录banner")
    private String appBanner;
    /**
     * 服务电话
     */
    @TableField(value = "service_phone")
    @Schema(description = "服务电话")
    private String servicePhone;
    /**
     * 应用登录banner大图
     */
    @TableField(value = "app_big_banner")
    @Schema(description = "应用登录banner大图")
    private String appBigBanner;
    /**
     * 服务时间
     */
    @TableField(value = "service_time")
    @Schema(description = "服务时间")
    private String serviceTime;
    /**
     * 版权信息
     */
    @TableField(value = "copyright")
    @NotNull(message = "版权信息不能为空")
    @Schema(description = "版权信息")
    private String copyright;
    /**
     * 应用版本信息
     */
    @TableField(value = "app_version")
    @NotNull(message = "应用版本信息不能为空")
    @Schema(description = "应用版本信息")
    private String appVersion;
    /**
     * 管理的空间ID
     */
    @TableField(value = "unique_space_id")
    @NotNull(message = "管理的空间ID不能为空")
    @Schema(description = "管理的空间ID")
    private String uniqueSpaceId;
    /**
     * 空间的场景ID
     */
    @TableField(value = "scene_id")
    @Schema(description = "空间的场景ID")
    private String sceneId;
    /**
     * 是否平台应用 TRUE:是 FALSE:否
     */
    @TableField(value = "platform_type")
    @NotNull(message = "是否平台应用不能为空")
    @Schema(description = "是否平台应用")
    private String platformType;
    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @TableField(value = "subject_life_cycle")
    @NotNull(message = "主体生命周期不能为空")
    @Schema(description = "主体生命周期")
    private String subjectLifeCycle;
    /**
     * 是否存档 TRUE:是 FALSE:否
     */
    @TableField(value = "is_archive")
    @NotNull(message = "是否存档不能为空")
    @Schema(description = "是否存档")
    private String isArchive;
    /**
     * 操作人就职记录ID
     */
    @TableField(value = "operation_induction_id")
    @NotNull(message = "操作人就职记录ID不能为空")
    @Schema(description = "操作人就职记录ID")
    private String operationInductionId;
    /**
     * 创建人就职记录ID
     */
    @TableField(value = "create_induction_id")
    @NotNull(message = "创建人就职记录ID不能为空")
    @Schema(description = "创建人就职记录ID")
    private String createInductionId;
    /**
     * 发布人就职记录ID
     */
    @TableField(value = "release_induction_id")
    @Schema(description = "发布人就职记录ID")
    private String releaseInductionId;
    /**
     * 存档人就职记录ID
     */
    @TableField(value = "archive_induction_id")
    @Schema(description = "存档人就职记录ID")
    private String archiveInductionId;
    /**
     * 操作时间
     */
    @TableField(value = "operate_time")
    @NotNull(message = "操作时间不能为空")
    @Schema(description = "操作时间")
    private Date operateTime;
    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @NotNull(message = "创建时间不能为空")
    @Schema(description = "创建时间")
    private Date createTime;
    /**
     * 发布时间
     */
    @TableField(value = "release_time")
    @Schema(description = "发布时间")
    private Date releaseTime;
    /**
     * 存档时间
     */
    @TableField(value = "archive_time")
    @Schema(description = "存档时间")
    private Date archiveTime;
    /**
     * 是否作废 TRUE:是 FALSE:否
     */
    @TableField(value = "is_valid")
    @NotNull(message = "是否作废不能为空")
    @Schema(description = "是否作废")
    private String isValid;
    /**
     * 创建于空间ID
     */
    @TableField(value = "space_id")
    @NotNull(message = "创建于空间ID不能为空")
    @Schema(description = "创建于空间ID")
    private String spaceId;
    /**
     * 创建于联盟应用ID
     */
    @TableField(value = "ascription_app_id")
    @NotNull(message = "创建于联盟应用ID不能为空")
    @Schema(description = "创建于联盟应用ID")
    private String ascriptionAppId;
}
